package models

type ConfigModel struct {
	ManagerEngine ManagerEngine `yaml:"ManagerEngine"`
}

type ManagerEngine struct {
	OpManager       OpManager       `yaml:"OpManager"`
	NetFlowAnalyzer NetFlowAnalyzer `yaml:"NetFlowAnalyzer"`
}

type OpManager struct {
	CookiesPath string `yaml:"CookiesPath"`
	// Port string        `yaml:"Port"`
	URI OpManagerURIs `yaml:"URI"`
}

type OpManagerURIs struct {
	BaseURL                  string `yaml:"BaseURL"`
	AllLogicalGroups         string `yaml:"AllLogicalGroups"`
	ListAssociatedMonitors   string `yaml:"ListAssociatedMonitors"`
	GraphData                string `yaml:"GraphData"`
	Login                    string `yaml:"Login"`
	Groups                   string `yaml:"Groups"`
	ServerLet                string `yaml:"ServerLet"`
	JSecurityCheckURL        string `yaml:"JSecurityCheckURL"`
	DeviceAssociatedMonitors string `yaml:"DeviceAssociatedMonitors"`
	ProcessDetail            string `yaml:"ProcessDetail"`
	ServiceDetail            string `yaml:"ServiceDetail"`
	CheckCookies             string `yaml:"CheckCookies"`
	DeviceSummary            string `yaml:"DeviceSummary"`
}

type NetFlowAnalyzer struct {
	CookiesPath string              `yaml:"CookiesPath"`
	Token       string              `yaml:"Token"`
	URI         NetFlowAnalyzerURIs `yaml:"URI"`
	API         NetFlowAnalyzerAPI  `yaml:"API"`
}

type NetFlowAnalyzerURIs struct {
	BaseURL           string `yaml:"BaseURL"`
	Index             string `yaml:"Index"`
	ServerLet         string `yaml:"ServerLet"`
	JSecurityCheckURL string `yaml:"JSecurityCheckURL"`
}

type NetFlowAnalyzerAPI struct {
	ListDevices        string `yaml:"ListDevices"`
	IndexInterfaceData string `yaml:"IndexInterfaceData"`
	SourceData         string `yaml:"SourceData"`
	ConvData           string `yaml:"ConvData"`
}

// type NetFlowRestAPI struct {
// 	Node map[string][]NetFlowNodes
// }

type NetFlowNodes struct {
	RouterID      string `yaml:"RouterID"`
	RouterIP      string `yaml:"RouterIP"`
	RouterName    string `yaml:"RouterName"`
	InterfaceID   string `yaml:"InterfaceID"`
	InterfaceName string `yaml:"InterfaceName"`
	NATIP         string `yaml:"NATIP"`
	TradeIP       string `yaml:"TradeIP"`
	InnerIP       string `yaml:"InnerIP"`
	DisplayName   string `yaml:"DisplayName"`
}
